#include <iostream>
#include <string>
#include <boost/backtrace.hpp>
#include <boost/exception/all.hpp>
#include <boost/throw_exception.hpp>
typedef boost::error_info<struct tag_my_info, std::wstring> my_info;
struct my_error : virtual boost::exception, virtual std::exception {};
void fun_a()
{
	throw std::runtime_error("runtime_error");
}
int main(int argc, char *argv[])
{
#ifdef _DEBUG
	std::cout << "debug" << std::endl;
#endif
#ifdef NDEBUG
	std::cout << "release" << std::endl;
#endif
	try {
		fun_a();
	} catch(const std::exception &e){
		std::cout << "std::exception=" << e.what() << std::endl;
		std::cout << boost::trace(e) << std::endl;
	}
}
